1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.glist; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.gnode; 34 35 extern (C): 36 37 alias _GList GList; 38 39 struct _GList 40 { 41 gpointer data; 42 GList* next; 43 GList* prev; 44 } 45 46 version(Derelict_Link_Static) 47 { 48 extern( C ) nothrow 49 { 50 GList* g_list_alloc(); 51 void g_list_free(GList* list); 52 void g_list_free_1(GList* list); 53 void g_list_free_full(GList* list, GDestroyNotify free_func); 54 GList* g_list_append(GList* list, gpointer data); 55 GList* g_list_prepend(GList* list, gpointer data); 56 GList* g_list_insert(GList* list, gpointer data, gint position); 57 GList* g_list_insert_sorted(GList* list, gpointer data, GCompareFunc func); 58 GList* g_list_insert_sorted_with_data(GList* list, gpointer data, GCompareDataFunc func, gpointer user_data); 59 GList* g_list_insert_before(GList* list, GList* sibling, gpointer data); 60 GList* g_list_concat(GList* list1, GList* list2); 61 GList* g_list_remove(GList* list, gconstpointer data); 62 GList* g_list_remove_all(GList* list, gconstpointer data); 63 GList* g_list_remove_link(GList* list, GList* llink); 64 GList* g_list_delete_link(GList* list, GList* link_); 65 GList* g_list_reverse(GList* list); 66 GList* g_list_copy(GList* list); 67 GList* g_list_copy_deep(GList *list, GCopyFunc func, gpointer user_data); 68 GList* g_list_nth(GList* list, guint n); 69 GList* g_list_nth_prev(GList* list, guint n); 70 GList* g_list_find(GList* list, gconstpointer data); 71 GList* g_list_find_custom(GList* list, gconstpointer data, GCompareFunc func); 72 gint g_list_position(GList* list, GList* llink); 73 gint g_list_index(GList* list, gconstpointer data); 74 GList* g_list_last(GList* list); 75 GList* g_list_first(GList* list); 76 guint g_list_length(GList* list); 77 void g_list_foreach(GList* list, GFunc func, gpointer user_data); 78 GList* g_list_sort(GList* list, GCompareFunc compare_func); 79 GList* g_list_sort_with_data(GList* list, GCompareDataFunc compare_func, gpointer user_data); 80 gpointer g_list_nth_data(GList* list, guint n); 81 } 82 } 83 else 84 { 85 extern( C ) nothrow 86 { 87 alias da_g_list_alloc = GList* function(); 88 alias da_g_list_free = void function(GList* list); 89 alias da_g_list_free_1 = void function(GList* list); 90 alias da_g_list_free_full = void function(GList* list, GDestroyNotify free_func); 91 alias da_g_list_append = GList* function(GList* list, gpointer data); 92 alias da_g_list_prepend = GList* function(GList* list, gpointer data); 93 alias da_g_list_insert = GList* function(GList* list, gpointer data, gint position); 94 alias da_g_list_insert_sorted = GList* function(GList* list, gpointer data, GCompareFunc func); 95 alias da_g_list_insert_sorted_with_data = GList* function(GList* list, gpointer data, GCompareDataFunc func, gpointer user_data); 96 alias da_g_list_insert_before = GList* function(GList* list, GList* sibling, gpointer data); 97 alias da_g_list_concat = GList* function(GList* list1, GList* list2); 98 alias da_g_list_remove = GList* function(GList* list, gconstpointer data); 99 alias da_g_list_remove_all = GList* function(GList* list, gconstpointer data); 100 alias da_g_list_remove_link = GList* function(GList* list, GList* llink); 101 alias da_g_list_delete_link = GList* function(GList* list, GList* link_); 102 alias da_g_list_reverse = GList* function(GList* list); 103 alias da_g_list_copy = GList* function(GList* list); 104 alias da_g_list_copy_deep = GList* function(GList *list, GCopyFunc func, gpointer user_data); 105 alias da_g_list_nth = GList* function(GList* list, guint n); 106 alias da_g_list_nth_prev = GList* function(GList* list, guint n); 107 alias da_g_list_find = GList* function(GList* list, gconstpointer data); 108 alias da_g_list_find_custom = GList* function(GList* list, gconstpointer data, GCompareFunc func); 109 alias da_g_list_position = gint function(GList* list, GList* llink); 110 alias da_g_list_index = gint function(GList* list, gconstpointer data); 111 alias da_g_list_last = GList* function(GList* list); 112 alias da_g_list_first = GList* function(GList* list); 113 alias da_g_list_length = guint function(GList* list); 114 alias da_g_list_foreach = void function(GList* list, GFunc func, gpointer user_data); 115 alias da_g_list_sort = GList* function(GList* list, GCompareFunc compare_func); 116 alias da_g_list_sort_with_data = GList* function(GList* list, GCompareDataFunc compare_func, gpointer user_data); 117 alias da_g_list_nth_data = gpointer function(GList* list, guint n); 118 } 119 120 __gshared 121 { 122 da_g_list_alloc g_list_alloc; 123 da_g_list_free g_list_free; 124 da_g_list_free_1 g_list_free_1; 125 da_g_list_free_full g_list_free_full; 126 da_g_list_append g_list_append; 127 da_g_list_prepend g_list_prepend; 128 da_g_list_insert g_list_insert; 129 da_g_list_insert_sorted g_list_insert_sorted; 130 da_g_list_insert_sorted_with_data g_list_insert_sorted_with_data; 131 da_g_list_insert_before g_list_insert_before; 132 da_g_list_concat g_list_concat; 133 da_g_list_remove g_list_remove; 134 da_g_list_remove_all g_list_remove_all; 135 da_g_list_remove_link g_list_remove_link; 136 da_g_list_delete_link g_list_delete_link; 137 da_g_list_reverse g_list_reverse; 138 da_g_list_copy g_list_copy; 139 da_g_list_copy_deep g_list_copy_deep; 140 da_g_list_nth g_list_nth; 141 da_g_list_nth_prev g_list_nth_prev; 142 da_g_list_find g_list_find; 143 da_g_list_find_custom g_list_find_custom; 144 da_g_list_position g_list_position; 145 da_g_list_index g_list_index; 146 da_g_list_last g_list_last; 147 da_g_list_first g_list_first; 148 da_g_list_length g_list_length; 149 da_g_list_foreach g_list_foreach; 150 da_g_list_sort g_list_sort; 151 da_g_list_sort_with_data g_list_sort_with_data; 152 da_g_list_nth_data g_list_nth_data; 153 } 154 }